package com.linearList;

/**
 * @Author: linKe
 * @Date: 2021/12/29 22:50
 * @FileName: LinearList
 * @version: 1.0
 * @Description: 线性表接口定义
 * 常用方法声明
 */
public  interface LinearList<T> {
    /**判断线性表是否为空
     * @return 结果
     */
     boolean isEmpty();

    /**
     * 返回线性表长度
     * @return  结果
     */
     int size();

    /**
     * 返回第i个元素
     * @param i 位置
     * @return  结果
     */
     T get(int i);

    /**
     * 设置第i个元素为X
     * @param i 第几个元素
     * @param x 设置的值
     */
     void set(int i,T x);

    /**
     * 作为元素的描述字符串
     * @return  字符串
     */
     @Override
     String toString();

    /**
     * 插入x作为第i个元素
     * @param i 位置
     * @param x 元素
     * @return  结果
     */
     int insert (int i,T x);

    /**
     * 删除第i个元素
     * @param i 位置
     * @return  结果
     */
     T remove(int i);

    /**
     * 删除值为x的元素
     * @param x 元素值
     * @return  结果
     */
     T remove(T x);
    /**
     * 查找与key相等元素
     * @param key  元素值
     * @return  结果
     */
     int search(T key);

    /**
     * 比较线性元素是否对应相等
     * @param obj  比较对象
     * @return  结果
     */
     @Override
     boolean equals(Object obj);

}
